<script>


    /*  // es5构造函数创建面向对象
     function Person(name,age,sex){
         // this.name="小宇"
         // this.age=18
         // this.sex="男"
 
         this.name=name
         this.age=age
         this.sex=sex
     }
 
     Person.prototype.say=function(){
         console.log(`我是${this.name}`);
     }
 
 
     // 实例化对象：
     let p=new Person("小宇",18,"男")
     console.log(p);//Person {name: '小宇', age: 18, sex: '男'}
     console.log(p.name);//小宇
     p.say()//我是小宇
 
 
     let p1=new Person("刘知晚",19,"男")
     console.log(p1);//Person {name: '刘知晚', age: 19, sex: '男'}
     p1.say()//我是刘知晚 */



    // es6的class创建面向对象
    /*  class Person {
 
         // 在这里直接写，不用加this
         //  name = "小宇"
         //  age = 18
         //  sex = "男"
 
         say(){
             console.log(`我是${this.name}`);
         }
     } */




    // es6的class创建面向对象
    class Person {

        // 在这里直接写，不用加this
        //  name = "小宇"
        //  age = 18
        //  sex = "男"


        // 系统提供的专门用来盛放属性的函数：constructor（不是瞎写的，是系统提供的）
        constructor(name, age, sex) {
            // 这个函数里头写属性：
            this.name = name
            this.age = age
            this.sex = sex

        }

        say() {
            console.log(`我是${this.name}`);
        }
    }



    // 实例化对象1
    let p = new Person("小宇", 18, "男")
    console.log(p);//Person {name: '小宇', age: 18, sex: '男'}
    console.log(p.name);//小宇
    p.say()//我是小宇


    // 实例化对象2
    let p1 = new Person("知晚", 19, "保密")
    console.log(p1);//Person {name: '知晚', age: 19, sex: '保密'}
    p1.say()//我是知晚





    // 总结：*****************
    // 创建一个类：
    /*   
    class 类名{
        constructor(形参){
            this.属性=值或者形参
            ....
        }

        其他函数(){}
        ...
    
    }
    */

    // 实例化对象：和之前一模一样
    // new 类名(参数1,参数2,,,) //这里的参数是往constructor函数中传参的






</script>